# _*_ coding:utf-8 _*_
# 开发团队: Mavericks
# 开发人员：Maverick·Ming
# 开发IDE： PyCharm
#   项目名：DouBanSpider
#   文件名：08 伪装访问豆瓣1.py
# 开发时间：2021/3/31 11:26

# 引入所需模块
import urllib.request,urllib.error


def main():  # 整体工作流程
    askURL('https://movie.douban.com/top250?start=0')


# 得到一个指定url的网页信息内容
def askURL(url):
    head = {  # 模拟浏览器头部信息，向豆瓣服务器发送消息
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    }  # head里的变量值User-Agent用户代理,告诉服务器，我们是浏览器访问，不是爬虫,"User - Agent"有空格会伪装失败
    # 接着将请求对象封装起来
    req = urllib.request.Request(url, headers=head)
    html = ''
    # 发送请求，并接受返回源码，可能会出现异常，为了捕获异常用上try语句
    try:
        response = urllib.request.urlopen(req)  # respone对象接受返回的网页信息
        html = response.read().decode('utf-8')  # 将网页信息中的html信息解码给html
        print(html)
    except urllib.error.URLError as e:
        if hasattr(e, 'code'):
            print(e.code)
        if hasattr(e, 'reason'):
            print(e.reason)


# 程序入口，确保程序执行的流程
if __name__ == '__main__':  # 当程序被调用执行时, 按照此语句入口的顺序执行程序，不至于乱序调用
    # 调用函数
    print('hello！开始伪装访问...')
    main()
    print('Haha! 访问结果出来了')

# 访问结果：
